package com.weaving.monitor.mapper;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;

/**
 * 疵点数据访问接口
 * 
 * 功能说明：
 * 1. 提供对prod_flaw表的数据库操作
 * 2. 根据产品ID和疵点类型查询疵点数量
 * 3. 为疵点统计提供数据支持
 * 
 * 注解说明：
 * - @Mapper: MyBatis注解，标识这是一个Mapper接口
 * 
 * 主要功能：
 * 1. 根据产品ID列表和疵点类型查询疵点数量
 * 2. 统计停车疵点和非停车疵点数量
 * 
 * @author 系统开发团队
 * @version 1.0
 * @since 2024-01-01
 */
@Mapper
public interface ProdFlawMapper {
    
    /**
     * 根据产品ID列表和疵点类型查询疵点数量
     * 
     * 功能说明：
     * 1. 根据产品ID列表和疵点类型查询疵点数量
     * 2. 查询条件：product_id in (产品ID列表) and type=指定的疵点类型
     * 3. 返回疵点数量，用于统计停车疵点和非停车疵点
     * 
     * SQL语句：
     * SELECT COUNT(*) FROM prod_flaw WHERE product_id IN (1,2,3) AND type=0
     * 
     * @param productIds 产品ID列表
     * @param flawType 疵点类型，0表示停车疵点，非0表示非停车疵点
     * @return 疵点数量
     */
    Integer selectFlawCountByProductIdsAndType(@Param("productIds") List<String> productIds, @Param("flawType") Integer flawType);
    
    /**
     * 根据生产品ID列表查询疵点详情列表
     * 
     * 功能说明：
     * 1. 根据生产品ID列表查询对应的疵点详情
     * 2. 查询条件：product_id in (生产品ID列表)
     * 3. 返回疵点详情列表，包含时间、位置等信息
     * 
     * @param productIds 生产品ID列表
     * @return 疵点详情列表
     */
    List<com.weaving.monitor.dto.FlawDetailDto> selectFlawDetailsByProductIds(@Param("productIds") List<String> productIds);
    
    /**
     * 根据产品ID查询疵点类型列表
     * 
     * 功能说明：
     * 1. 根据产品ID查询对应的疵点类型列表
     * 2. 查询条件：product_id=指定的产品ID
     * 3. 返回疵点类型列表，用于质量状态统计
     * 
     * SQL语句：
     * SELECT type FROM prod_flaw WHERE product_id=#{productId}
     * 
     * @param productId 产品ID
     * @return 疵点类型列表
     */
    List<Integer> selectFlawTypesByProductId(@Param("productId") String productId);
} 